The present invention relates generally to schedulers and, more particularly, to a domain-independent, reconfigurable scheduler.
Automated scheduling systems have existed for years. These systems have been used for creating schedules in a wide range of domains. For example, a particular scheduler may be used to schedule tasks on a busy factory floor, to schedule service visits by multiple repair people, to schedule taxicabs to pickups, to schedule personnel to shifts, etc.
Often times, programmers are used to develop a particular scheduler from scratch (i.e., programmers write code for the particular domain of operation). When a scheduler is to operate in multiple domains, programmers typically build a common base code and then create domain-specific code on top of this base code for each domain. The problem with the above two scenarios is that it is costly to write domain-specific code, and writing this code often requires special knowledge about the base code.
Therefore, there exists a need for a system and method that can quickly and inexpensively provide schedules independent of the specific domain of operation.
Systems and methods consistent with the present invention address this and other needs by providing a mechanism by which a scheduler can be easily and inexpensively reconfigured for different domains.
In accordance with the purpose of the invention as embodied and broadly described herein, a method for configuring a scheduler includes receiving at least one data object related to a domain, the at least one data object describing one or more resources available to be scheduled; receiving scheduling semantics related to the domain, the scheduling semantics being received as non-compiled data; and configuring the scheduler for the domain using the at least one data object and scheduling semantics.
In another implementation consistent with the present invention, a method for scheduling a use of a resource includes receiving a data object describing a task to be scheduled, the data object being received as non-compiled data; and determining a schedule for the resource based on the received data object, at least one data object that describes the resource, and a group of scheduling semantics.
In a further implementation consistent with the present invention, a method for reconfiguring a scheduler that has been configured for a first domain includes receiving scheduling semantics related to a second, different domain, the scheduling semantics being received as non-compiled data; receiving at least one data object related to the second domain, the at least one data object describing one or more resources available to be scheduled; and configuring the scheduler for the second domain using the at least one data object and scheduling semantics.